/*
 * lowpass_filter.h
 *
 *  Created on: Nov 20, 2024
 *      Author: Vinson
 */

#ifndef SRC_MOTOR_LOWPASS_FILTER_H_
#define SRC_MOTOR_LOWPASS_FILTER_H_
#include "stdint.h"

typedef struct _lowpass_filter {
	float    tf;				/* 低通滤波的时间常熟 */
	float    output_prev;       /* 上一个循环过滤后的值 */
	uint64_t ts_prev;			/* 最后执行的时间戳 */

	void (*init)(struct _lowpass_filter *filter, float Tf);
	float (*lpf)(struct _lowpass_filter *filter, float input);
} lowpass_filter_t;

/* @brief  ：创建一个低通滤波器
 * @name   ：lowpass_filter_create
 * @param  ：tf。滤波器tf 参数
 * @return ： 返回滤波器指针
 * @details：无
 */
lowpass_filter_t *lowpass_filter_create(float tf);
/* @brief  ：滤波器销毁
 * @name   ：lowpass_filter_destory
 * @param  ：filter。滤波器对象
 * @return ： 无
 * @details：无
 */
void lowpass_filter_destory(lowpass_filter_t *filter);

#endif /* SRC_MOTOR_LOWPASS_FILTER_H_ */
